﻿using System;
using System.Text.RegularExpressions;
using System.Windows.Forms;

namespace sy1_10
{
    public partial class Form1 : Form
    {
        // 正则表达式：匹配无符号整数（非空且仅包含数字）
        private readonly Regex unsignedIntRegex = new Regex(@"^\d+$");

        public Form1()
        {
            InitializeComponent();
        }

        // 数据校验方法
        private bool ValidateInput(out int num1, out int num2)
        {
            num1 = 0;
            num2 = 0;

            // 校验操作数1是否为空
            if (string.IsNullOrWhiteSpace(txtNum1.Text))
            {
                MessageBox.Show("操作数1不能为空！", "输入错误");
                return false;
            }

            // 校验操作数2是否为空
            if (string.IsNullOrWhiteSpace(txtNum2.Text))
            {
                MessageBox.Show("操作数2不能为空！", "输入错误");
                return false;
            }

            // 校验操作数1是否为无符号整数
            if (!unsignedIntRegex.IsMatch(txtNum1.Text))
            {
                MessageBox.Show("操作数1必须是无符号整数！", "输入错误");
                return false;
            }

            // 校验操作数2是否为无符号整数
            if (!unsignedIntRegex.IsMatch(txtNum2.Text))
            {
                MessageBox.Show("操作数2必须是无符号整数！", "输入错误");
                return false;
            }

            // 转换为整数
            num1 = int.Parse(txtNum1.Text);
            num2 = int.Parse(txtNum2.Text);
            return true;
        }

        // 加法运算
        private void btnAdd_Click(object sender, EventArgs e)
        {
            if (ValidateInput(out int num1, out int num2))
            {
                txtResult.Text = (num1 + num2).ToString();
            }
        }

        // 减法运算
        private void btnSubtract_Click(object sender, EventArgs e)
        {
            if (ValidateInput(out int num1, out int num2))
            {
                txtResult.Text = (num1 - num2).ToString();
            }
        }

        // 乘法运算
        private void btnMultiply_Click(object sender, EventArgs e)
        {
            if (ValidateInput(out int num1, out int num2))
            {
                txtResult.Text = (num1 * num2).ToString();
            }
        }

        // 除法运算（额外校验除数不为0）
        private void btnDivide_Click(object sender, EventArgs e)
        {
            if (ValidateInput(out int num1, out int num2))
            {
                if (num2 == 0)
                {
                    MessageBox.Show("除数不能为0！", "运算错误");
                    return;
                }
                txtResult.Text = (num1 / (double)num2).ToString("0.00"); // 保留两位小数
            }
        }

        // 清空按钮
        private void btnClear_Click(object sender, EventArgs e)
        {
            txtNum1.Clear();
            txtNum2.Clear();
            txtResult.Clear();
        }

        // 退出按钮
        private void btnExit_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
    }
}
